#ifndef SCENARIO_TEST_H
#define SCENARIO_TEST_H

#include <bn_format.h>
#include <bn_keypad.h>
#include <bn_random.h>
#include <bn_regular_bg_ptr.h>
#include <bn_string_view.h>
#include <bn_sprite_animate_actions.h>
#include <bn_vector.h>
#include <bn_unique_ptr.h>
#include <bn_unordered_map.h>

#include "iso_movable.h"

#include "bn_regular_bg_items_iso_classroom.h"
#include "bn_sprite_items_desk32.h"
#include "bn_sprite_items_desknchair32.h"
#include "bn_sprite_items_nyra32_playing.h"
#include "bn_sprite_items_toru32_desk.h"
#include "bn_sprite_items_toru32_idle_right.h"
#include "bn_sprite_items_yuji32_idle.h"
#include "bn_sprite_items_main32.h"

class scenario_test
{
private:
    bn::vector<staticSprite*, 10> objects{};
    staticSprite nyraSprite;
    movableSprite playerSprite;
    bn::optional<bn::sprite_animate_action<2>> nyraAnimation;
    bn::regular_bg_ptr classroomBg;
    bn::unordered_map<bn::keypad::key_type, movableSprite::Direction, movableSprite::Direction::Count> keyDirBindings;

protected:
    void nyraAnimationUpdate();
    bool playerMovementUpdate();
    void zOrderUpdate();

public:
    scenario_test();
    ~scenario_test() = default;
    void scenarioInit();

public:
    void scenarioUpdate();
};

#endif // SCENARIO_TEST_H
